package com.demo.java.OD101_150.OD117;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【日志采集系统】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145699104
 */
public class OdMain {
    // 计算得分的函数
    private static int getScore(int[] numbers, int ts) {
        int myScore = 0; // 用于保存当前得分
        int sum = 0;     // 用于记录已选择的数字总和
        // 从第 0 个元素开始，逐个判断
        for (int i = 0; i <= ts; ++i) {
            // 如果当前数字加上已选数字的总和小于 100，则继续选择该数字
            if (100 > sum + numbers[i]) {
                myScore += numbers[i];              // 累加当前数字到得分
                myScore -= numbers[i] * (ts - i);   // 减去一定的惩罚分
                sum += numbers[i];                  // 更新总和
            } else {  // 如果当前数字加上已选数字的总和大于等于 100
                int dis = 100 - sum;  // 计算需要的数字，以使总和达到 100
                for (int j = 0; j < i; ++j) {
                    dis -= numbers[j];  // 减去已选数字的总和
                    numbers[j] = 0;     // 已选的数字置为 0
                }
                numbers[i] -= dis;  // 当前数字减去需要的部分
                myScore += dis;     // 累加到得分
                myScore -= dis * (ts - i);  // 减去惩罚分
                return myScore;     // 返回当前计算结果
            }
        }
        return myScore;  // 返回最终得分
    }

    public static void main(String[] args) {
        try {
            // 创建 Scanner 对象来读取输入
            Scanner scan = new Scanner(System.in);
            // 读取用户输入的一行字符串
            String inputValue = scan.nextLine();
            // 检查输入是否合法
            if (inputValue == null || inputValue.length() == 0 || inputValue.length() > 1000) {
                System.out.println("input error");  // 如果输入为空或长度不合法，输出错误信息
                return;
            }

            int scoreResult = 0;  // 用于存储最终的得分结果

            // 按空格拆分输入的字符串，并转换为整数数组
            String[] split = inputValue.split(" ");
            int[] intNumbers = new int[split.length];
            for (int i = 0; i < intNumbers.length; ++i) {
                intNumbers[i] = Integer.parseInt(split[i]);
            }

            // 如果第一个数字大于 100，直接输出 100
            if (intNumbers.length > 0 && intNumbers[0] > 100) {
                System.out.print(100);
                return;
            }

            // 遍历数组，计算每个可能的得分
            for (int i = 0; i < intNumbers.length; ++i) {
                scoreResult = Math.max(scoreResult, getScore(intNumbers, i));  // 更新最高得分
            }
            System.out.print(scoreResult);  // 输出最终的得分
        } catch (Exception e) {
            e.printStackTrace();  // 捕获异常并输出堆栈信息
            System.out.println("input error");  // 如果发生异常，输出错误信息
        }
    }
}